tg-me.com/php_interview_lib/802
Last Update:
Как PHP интерпретирует числовые строки с ведущими нулями, например, '0123'?
В PHP строка с ведущими нулями, например, '0123'
, при приведении к числу интерпретируется как десятичное значение без учёта ведущих нулей: результат будет 123
. Это поведение отличается от интерпретации числовых литералов с ведущими нулями в исходном коде, где такие значения трактуются как восьмеричные (например, 0123
в исходном коде будет равно 83
в десятичной системе).
⚠️ Важное замечание
Если строка начинается с нуля и содержит только цифры, PHP может интерпретировать её как восьмеричное число. Например, строка '0123'
может быть интерпретирована как восьмеричное число, что соответствует десятичному значению 83
.
Чтобы избежать подобных недоразумений, рекомендуется явно указывать основание системы счисления при необходимости. Например, для восьмеричного числа можно использовать функцию intval
с указанием основания:var_dump(intval('0123', 8)); // int(83)
Это обеспечит корректную интерпретацию строки как восьмеричного числа.
✅ Рекомендации
Для хранения чисел с ведущими нулями: используйте строковый тип данных (string
), чтобы сохранить формат числа.
Для обработки чисел с ведущими нулями: при необходимости обработки таких чисел учитывайте возможные проблемы с интерпретацией ведущих нулей и применяйте явное указание основания системы счисления.
BY Библиотека собеса по PHP | вопросы с собеседований
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/php_interview_lib/802